package com.example.demo3annotation;

@MyBook(value = "赵丽颖", age = 18, address = {"北京", "上海"})
// @A(value = "delete") // 完整的写法
// @A("delete") // 如果注解中只有一个value属性且必须叫value 那么前面的value可以省略不写
// @A(value = "delete", hobby = "打游戏") // 如果有默认值可以不写
@A("delete")
public class AnnotationDemo1 {
    @MyBook(value = "王菲", age = 52, address = {"北京", "香港"})
    // 到处都可以使用注解 方法参数 等等
    public static void main(@A("delete") String[] args) {
        // 目标：自定义注解
        @A("delete")
        int a;
    }
}

/*
注解的原理：
把注解反编译之后，得到的是一个接口，继承了 java.lang.annotation.Annotation
在注解中定义的属性，反编译之后就变成了 一个个的抽象方法

在使用注解的时候，其实就是在创建对象，因为接口不能创建对象，所以肯定是创建一个实现类对象
对象中封装这对应的数据
@MyBook(value = "赵丽颖", age = 18, address = {"北京", "上海"})
 */
